// 引入时间相关库
import 'package:intl/intl.dart';
import 'package:flutter/material.dart';

import 'ChatDetailPage.dart';


class MessagePage extends StatefulWidget {
  const MessagePage({Key? key}) : super(key: key);

  @override
  _MessagePageState createState() => _MessagePageState();
}

class _MessagePageState extends State<MessagePage> {
  // 模拟最近好友的聊天列表数据
  final List<Map<String, dynamic>> friends = [
    {
      'name': '炎龙铠甲',
      'avatar': 'images/1.jpg',
      'lastMessage': '你好,我是炎龙铠甲',
      'time': 'yesterday',
      'messages': []  // 初始消息列表为空
    },
    {
      'name': '黑犀铠甲',
      'avatar': 'images/2.jpg',
      'lastMessage': '你好,我是黑犀铠甲',
      'time': 'yesterday',
      'messages': []
    },
    {
      'name': '烈焰星神',
      'avatar': 'images/3.jpg',
      'lastMessage': '你好,我是烈焰星神',
      'time': 'yesterday',
      'messages': []
    },
    {
      'name': '盖亚',
      'avatar': 'images/4.jpg',
      'lastMessage': '你好,我是盖亚',
      'time': 'yesterday',
      'messages': []
    },
    {
      'name': '宙斯',
      'avatar': 'images/5.jpg',
      'lastMessage': '你好,我是宙斯',
      'time': 'yesterday',
      'messages': []
    },
    {
      'name': '阿波罗',
      'avatar': 'images/6.jpg',
      'lastMessage': '你好,我是阿波罗',
      'time': 'yesterday',
      'messages': []
    },
    {
      'name': '维纳斯',
      'avatar': 'images/7.jpg',
      'lastMessage': '你好,我是维纳斯',
      'time': 'yesterday',
      'messages': []
    },
    {
      'name': '萨隆',
      'avatar': 'images/8.jpg',
      'lastMessage': '你好,我是萨隆',
      'time': 'yesterday',
      'messages': []
    },
    {
      'name': '普罗托',
      'avatar': 'images/9.jpg',
      'lastMessage': '你好,我是普罗托',
      'time': 'yesterday',
      'messages': []
    },
    {
      'name': '波塞冬',
      'avatar': 'images/10.jpg',
      'lastMessage': '你好,我是波塞冬',
      'time': 'yesterday',
      'messages': []
    },
    {
      'name': '卡洛斯',
      'avatar': 'images/11.jpg',
      'lastMessage': '你好,我是卡洛斯',
      'time': 'yesterday',
      'messages': []
    },
    {
      'name': '阿瑞斯',
      'avatar': 'images/12.jpg',
      'lastMessage': '你好,我是阿瑞斯',
      'time': 'yesterday',
      'messages': []
    },
    // 添加更多好友的聊天记录
  ];

  // 更新好友列表中的最后消息和时间
  // void updateLastMessage(int index, String message) {
  //   setState(() {
  //     friends[index]['lastMessage'] = message;
  //     friends[index]['time'] = _formatTime(DateTime.now());
  //   });
  // }

  // 使用 ValueNotifier 监听更新
  final ValueNotifier<Map<String, String>> lastMessageNotifier = ValueNotifier({
    'lastMessage': '',
    'time': '',
  });

  String _formatTime(DateTime dateTime) {
    final now = DateTime.now();
    if (now.difference(dateTime).inDays == 0) {
      // 当天消息显示小时和分钟
      return DateFormat.Hm().format(dateTime);
    } else {
      // 非当天显示年月日
      return DateFormat('yyyy/MM/dd').format(dateTime);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView.builder(
        itemCount: friends.length,
        itemBuilder: (context, index) {
          var friend = friends[index];
          return ValueListenableBuilder(
            valueListenable: lastMessageNotifier,
            builder: (context, value, child) {
              // 更新好友的 lastMessage 和 time
              if (value['lastMessage'] != '' && friend['name'] == value['name']) {
                friend['lastMessage'] = value['lastMessage']!;
                friend['time'] = value['time']!;
              }
              return ListTile(
                leading: CircleAvatar(
                  backgroundImage: AssetImage(friend['avatar']),
                ),
                title: Text(friend['name']),
                subtitle: Text(friend['lastMessage']),
                trailing: Text(friend['time']),
                onTap: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) => ChatDetailPage(
                        friendName: friend['name'],
                        friendAvatar: friend['avatar'],
                        initialMessages: List<String>.from(friend['messages'] ?? []),
                        lastMessageNotifier: lastMessageNotifier,
                        friendIndex: index,
                        updateMessagesCallback: (newMessages) {
                          // 更新当前好友的消息列表
                          setState(() {
                            friends[index]['messages'] = newMessages;
                          });
                        },
                      ),
                    ),
                  );
                },
              );
            },
          );
        },
      ),
    );
  }
}


